﻿<?xml version="1.0" encoding="utf-8" ?>

<doc>
    <member name="BeginRaise(EventHandler,object,AsyncCallback,object)">
        <summary>
            Begins raising a non-generic event.
        </summary>
        <remarks>
            This method begins raising the specified non-generic event and passes in <c>EventArgs.Empty</c> as the event arguments.
        </remarks>
        <param name="handler">
            The event to be raised.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
        <param name="callback">
            A delegate to call once the event has been raised, or <see langword="null"/> if no delegate should be called.
        </param>
        <param name="asyncState">
            Any additional information to pass to the <paramref name="callback"/>.
        </param>
    </member>

    <member name="Raise(EventHandler,object)">
        <summary>
            Raises a non-generic event.
        </summary>
        <remarks>
            This method raises the specified non-generic event and passes in <c>EventArgs.Empty</c> as the event arguments.
        </remarks>
        <param name="handler">
            The event to be raised.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
    </member>

    <member name="BeginRaise(Delegate,object,EventArgs,AsyncCallback,object)">
        <summary>
            Begins raising a non-generic event.
        </summary>
        <remarks>
            <para>
                This method can be used to begin raising a non-generic event that needs a specific <see cref="EventArgs"/> subclass
                as its second parameter. This method assumes that <paramref name="handler"/> points to a method that conforms to the
                standard .NET event signature. That is, it takes an <see cref="object"/> as its first parameter and an
                <see cref="EventArgs"/> instance as its second.
            </para>
            <para>
                This method is intended to address an esoteric scenario whereby an event has been declared without using the built-in
                <see cref="EventHandler"/> or <see cref="EventHandler{T}"/> delegates. If possible, it is recommended that the event
                be modified to conform to standards instead.
            </para>
        </remarks>
        <param name="handler">
            The event to be raised.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
        <param name="e">
            The event arguments.
        </param>
        <param name="callback">
            A delegate to call once the event has been raised, or <see langword="null"/> if no delegate should be called.
        </param>
        <param name="asyncState">
            Any additional information to pass to the <paramref name="callback"/>.
        </param>
    </member>

    <member name="Raise(Delegate,object,EventArgs)">
        <summary>
            Raises a non-generic event.
        </summary>
        <remarks>
            This method can be used to raise a non-generic event that needs a specific <see cref="EventArgs"/> subclass as its
            second parameter. This method assumes that <paramref name="handler"/> points to a method that conforms to the
            standard .NET event signature. That is, it takes an <see cref="object"/> as its first parameter and an
            <see cref="EventArgs"/> instance as its second.
        </remarks>
        <param name="handler">
            The event handler.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
        <param name="e">
            The arguments for the event.
        </param>
        <exception cref="System.Reflection.TargetParameterCountException">
            If <paramref name="handler"/> does not contain the correct number of arguments or contains arguments of the wrong
            type or in the wrong order.
        </exception>
    </member>

    <member name="BeginRaise{T}(EventHandler{T},object,T,AsyncCallback,object)">
        <summary>
            Begins raising a generic event.
        </summary>
        <remarks>
            This method begins raising a generic event, passing in the specified event arguments.
        </remarks>
        <typeparam name="T">
            The event arguments type.
        </typeparam>
        <param name="handler">
            The event to be raised.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
        <param name="e">
            The event arguments.
        </param>
        <param name="callback">
            A delegate to call once the event has been raised, or <see langword="null"/> if no delegate should be called.
        </param>
        <param name="asyncState">
            Any additional information to pass to the <paramref name="callback"/>.
        </param>
    </member>

    <member name="Raise{T}(EventHandler{T},object,T)">
        <summary>
            Raises a generic event.
        </summary>
        <remarks>
            This method raises a generic event, passing in the specified event arguments.
        </remarks>
        <typeparam name="T">
            The event arguments type.
        </typeparam>
        <param name="handler">
            The event to be raised.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
        <param name="e">
            The arguments for the event.
        </param>
    </member>

    <member name="BeginRaise{T}(EventHandler{T},object,Func{T},AsyncCallback,object)">
        <summary>
            Begins raising a generic event.
        </summary>
        <typeparam name="T">
            The event arguments type.
        </typeparam>
        <param name="handler">
            The event to be raised.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
        <param name="createEventArguments">
            The delegate to invoke if an event arguments instance is needed.
        </param>
        <param name="callback">
            A delegate to call once the event has been raised, or <see langword="null"/> if no delegate should be called.
        </param>
        <param name="asyncState">
            Any additional information to pass to the <paramref name="callback"/>.
        </param>
    </member>

    <member name="Raise{T}(EventHandler{T},object,Func{T})">
        <summary>
            Raises a generic event, but does not create the event arguments unless there is at least one handler for the event.
        </summary>
        <typeparam name="T">
            The event arguments type.
        </typeparam>
        <param name="handler">
            The event to be raised.
        </param>
        <param name="sender">
            The sender of the event.
        </param>
        <param name="createEventArguments">
            The delegate to invoke if an event arguments instance is needed.
        </param>
        <exception cref="ArgumentNullException">
            If <paramref name="createEventArguments"/> is <see langword="null"/>.
        </exception>
    </member>
</doc>